#ifndef AI9_LOGIC_2017_DEBUGSKILL_H
#define AI9_LOGIC_2017_DEBUGSKILL_H

#include "event.h"

namespace skill {
    class Refreash : public Automatic {
    public:
        Refreash() : Automatic() {
            this->setName("Refreash");
            this->turn = StartTurn;
        }

        bool use(Game *g, const std::vector<std::string> &params) override;
    };
    class AutoCleanse: public Automatic {
    public:
        AutoCleanse(): Automatic() {
            this->setName("AutoCleanse");
            this->turn = StartTurn;
        }

        bool use(Game *g, const std::vector<std::string> &params) override;
    };
    class Shutdown: public Skill {
    public:
        Shutdown(): Skill(){
            this->setName("Shutdown");
            this->turn = DeathCalculationTurn;
        }

        bool use(Game *g, const std::vector<std::string> &params) override {
            origin->properties["dead"]= "true";
            (dynamic_cast<Actor*>(origin))->setPos(Point(-1, -1));
            origin->learnSkill(new skill::TriggeredDeath);
            origin->useLater("TriggeredDeath",{});
            return Skill::use(g, params);
        }
    };
}
#endif //AI9_LOGIC_2017_DEBUGSKILL_H
